// ProjectName: go-learn-demo
// PackageName: oop
// Description: 普通情况下，定义猫咪和狗两个结构体，每个结构体都有自己的Say方法
// Author: hy.bai
// Date: 2025-07-29 21:40

package interybxb

import "fmt"

// 定义猫咪结构体
type Cat struct {
	Name string
}

// 定义猫咪结构体的方法
func (c *Cat) Say() {
	fmt.Printf("Tom[%s], 喵喵~~~\n", c.Name)
}

// 定义狗狗结构体
type Dog struct {
	Name string
}

// 定义狗狗结构体的方法
func (d *Dog) Say() {
	fmt.Printf("斯派克[%s], 汪汪~~~\n", d.Name)
}

// 测试为引入接口时，
func TestInterface() {

	var cat = &Cat{Name: "滔滔"}
	cat.Say() // 打印:Tom[滔滔], 喵喵~~~

	dog := &Dog{Name: "大黄"}
	dog.Say() // 打印：斯派克[大黄], 汪汪~~~
}
